﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using FONCREAGROINTEGRAL.Models;

namespace FONCREAGROINTEGRAL.Controllers
{
    public class detalleventaController : Controller
    {
        public SistIntFoncreagroEntities entidades = new SistIntFoncreagroEntities();
        //
        // GET: /detalleventa/

        public ActionResult IndexById(int id)
        {

            var query = entidades.DETALLEVENTAs.Where(dv => dv.IdDetalleVenta == id);

            var result = (from dv in query.OrderByDescending(v => v.IdVenta).ToList()
                          //join cv in entidades.CATALOGOVENTAs on dv.IdCatVenta equals cv.IdCatVenta 
                          join mv in entidades.MOTIVOVENTAs on dv.IdMotivoVenta equals mv.IdMotivoVenta
                          join s in entidades.SEMOVIENTEs on dv.IdSemoviente equals s.IdSemoviente
                          //join bn in entidades.BANCOes on v.IdBanco equals bn.IdBanco into lbn
                          //from x in lbn.DefaultIfEmpty()

                          select new
                          {
                              IdDetalleVenta = dv.IdDetalleVenta,
                              IdVenta = dv.IdVenta,
                              Cantidad = dv.Cantidad,
                              PrecioUnitario = dv.PrecioUnitario,
                              IdCatVenta = dv.IdCatVenta,
                              //NomCatVenta = cv.Descripcion,
                              Glosa = dv.Glosa,
                              IdSemoviente = dv.IdSemoviente,
                              NomSemoviente = s.Nombre + " " + s.AreteEstablo + " " + s.AreteMicrochip,
                              AreteEstablo = s.AreteEstablo,
                              IdMotivoVenta = dv.IdMotivoVenta,
                              NomMotivoVenta = mv.Descripcion,
                              Total = dv.Total

                          }).ToList();

            return Json(new { grid = result, total = query.Count() }, JsonRequestBehavior.AllowGet);
        }
        
        //
        // GET: /detalleventa/

        public ActionResult Index(int id)
        {
            int start = Convert.ToInt32(Request.QueryString["start"]);
            int limit = Convert.ToInt32(Request.QueryString["limit"]);

            var query = entidades.DETALLEVENTAs.Where(dv => dv.IdVenta == id);

            var result = (from dv in query.OrderByDescending(v => v.IdVenta).Skip(start).Take(limit).ToList()
                          //join cv in entidades.CATALOGOVENTAs on dv.IdCatVenta equals cv.IdCatVenta 
                          join mv in entidades.MOTIVOVENTAs on dv.IdMotivoVenta equals mv.IdMotivoVenta
                          join s in entidades.SEMOVIENTEs on dv.IdSemoviente equals s.IdSemoviente
                          //join bn in entidades.BANCOes on v.IdBanco equals bn.IdBanco into lbn
                          //from x in lbn.DefaultIfEmpty()

                          select new
                          {
                              IdDetalleVenta = dv.IdDetalleVenta,
                              IdVenta = dv.IdVenta,
                              Cantidad = dv.Cantidad,
                              PrecioUnitario = dv.PrecioUnitario,
                              IdCatVenta = dv.IdCatVenta,
                              //NomCatVenta = cv.Descripcion,
                              Glosa = dv.Glosa,
                              IdSemoviente = dv.IdSemoviente,
                              NomSemoviente = s.Nombre+" "+s.AreteEstablo+" "+s.AreteMicrochip,
                              IdMotivoVenta = dv.IdMotivoVenta,
                              NomMotivoVenta = mv.Descripcion,
                              Total = dv.Total

                          }).ToList();

            return Json(new { grid = result, total = query.Count() }, JsonRequestBehavior.AllowGet);
        }

        //
        // GET: /detalleventa/Details/5

        public ActionResult Details(int id)
        {
            return View();
        }

        //
        // GET: /detalleventa/Create

        //public ActionResult Create()
        //{
        //    return View();
        //} 

        //
        // POST: /detalleventa/Create

        [HttpPost]
        public ActionResult Create(FormCollection collection)
        {
            String strResponse = String.Empty;
            try
            {
                // TODO: Add insert logic here
                var cDetalleVenta= new DETALLEVENTA();

                TryUpdateModel(cDetalleVenta, collection.ToValueProvider());
                cDetalleVenta.Total = cDetalleVenta.PrecioUnitario * cDetalleVenta.Cantidad;
                entidades.AddToDETALLEVENTAs(cDetalleVenta);
                entidades.SaveChanges();

                strResponse = "{success: true,msg:'Registro creado correctamente'}";
                return Content(strResponse);
            }
            catch (Exception e)
            {
                string sms = e.Message;
                strResponse = "{success: false,msg:\"" + sms + "\"}";
                return Content(strResponse);
            }
        }
        
        //
        // GET: /detalleventa/Edit/5
 
        //public ActionResult Edit(int id)
        //{
        //    return View();
        //}

        //
        // POST: /detalleventa/Edit/5

        [HttpPost]
        public ActionResult Edit(int id, FormCollection collection)
        {
            String strResponse = String.Empty;
            var eDetalleVenta = entidades.DETALLEVENTAs.Single(dv => dv.IdDetalleVenta == id);
            try
            {
                // TODO: Add update logic here

                TryUpdateModel(eDetalleVenta);
                eDetalleVenta.Total = eDetalleVenta.PrecioUnitario * eDetalleVenta.Cantidad;
                entidades.SaveChanges();

                strResponse = "{success: true,msg:'Registro creado correctamente'}";
                return Content(strResponse);
            }
            catch (Exception e)
            {
                string sms = e.Message;
                strResponse = "{success: false,msg:\"" + sms + "\"}";
                return Content(strResponse);
            }
        }

        //
        // GET: /detalleventa/Delete/5
 
        public ActionResult Delete(int id)
        {
            return View();
        }

        //
        // POST: /detalleventa/Delete/5

        [HttpPost]
        public ActionResult Delete(int id, FormCollection collection)
        {
            try
            {
                // TODO: Add delete logic here
 
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }
    }
}
